package com.xhtt.modules.task.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xhtt.common.utils.PageUtils;
import com.xhtt.modules.sys.entity.SysUserEntity;
import com.xhtt.modules.task.entity.TaskCarPlan;
import com.xhtt.modules.task.entity.TaskCarTask;
import com.xhtt.modules.task.entity.TaskCarTaskUser;
import com.xhtt.modules.task.model.car.ArrangeUserModel;
import com.xhtt.modules.task.model.car.AssignTaskModel;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 排车任务-主任务 服务类
 * </p>
 *
 * @author feipc
 * @since 2019-02-27
 */
public interface TaskCarTaskService extends IService<TaskCarTask> {

    PageUtils taskList(Map<String, Object> params);

    /**
     * 获取用户最后一个排车任务的完成时间
     *
     * @param userId
     * @return
     */
    LocalDateTime getUserFinishTime(Integer userId);

    void assignTask(AssignTaskModel model);

    PageUtils taskWorkingList(Map<String, Object> params);

    void changeShifts(SysUserEntity user, TaskCarTaskUser tu);

    /**
     * 查看一个台装车中数量
     *
     * @param standId
     * @return
     */
    int getLoadingCount(Integer standId);

    /**
     * 获取待装车的第一个计划任务
     *
     * @param standId
     * @return
     */
    TaskCarPlan getWaitingTask(Integer standId);

    void operComplete(TaskCarTask taskCarTask, Integer userId);

    List<TaskCarPlan> getAllWaitingTasks();

    List<TaskCarTask> shiftsList(Integer selfId);

    /**
     * app 排车-装车人员统计分析
     * @param params
     * @return
     */
    List<Map<String,Object>> carForUser(Map<String,Object> params);

    /**
     *  app 排车-装车台统计分析
     * @param params
     * @return
     */
    List<Map<String,Object>> carForStand(Map<String,Object> params);

    void arrangeUser(ArrangeUserModel model, SysUserEntity user);
}
